package com.atguigu.gmall.product.service;

import com.atguigu.gmall.model.product.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * projectName: gmall
 *
 * @author: 陈鹏
 * time: 2022/9/21 16:11 星期三
 * description:后台管理页面使用的服务层
 */
@Service
public interface ManagerService {

    /**
     * 查询所有的一级分类
     * @return
     */
    public List<BaseCategory1> getBaseCategory1();

    /**
     * 根据一级分类IID查询二级分类
     * @param c1Id
     * @return
     */
    public List<BaseCategory2> getBaseCategory2(Long c1Id);

    /**
     * 根据二级分类ID查询三级分类
     * @param c2Id
     * @return
     */
    public List<BaseCategory3> getBaseCategory3(Long c2Id);

    /**
     * 保存平台属性
     * @param baseAttrInfo
     */
    public void saveBaseAttrInfo(BaseAttrInfo baseAttrInfo);

    /**
     * 查询平台属性列表
     * @param category1Id
     * @param category2Id
     * @param category3Id
     * @return
     */
    public List<BaseAttrInfo> getBaseAttrInfo(Long category1Id,
                                              Long category2Id,
                                              Long category3Id);

    /**
     * 查询平台值列表
     * @param attrId
     * @return
     */
    public List<BaseAttrValue> getBaseAttrValue(Long attrId);

    /**
     * 查询品牌列表
     * @return
     */
    public List<BaseTrademark> getBaseTrademark();

    /**
     * 查询所有的销售属性
     * @return
     */
    public List<BaseSaleAttr> getBaseSaleAttr();

    /**
     * 保存spu的信息
     * @param spuInfo
     */
    public void saveSpuInfo(SpuInfo spuInfo);

    /**
     * 分页查询spuInfo信息
     * @param page
     * @param size
     * @param category3Id
     * @return
     */
    public IPage<SpuInfo> getSpuInfoList(Integer page,Integer size,Long category3Id);

    /**
     * 查询品牌列表
     * @param page
     * @param size
     * @return
     */
    public IPage<BaseTrademark> getBaseTrademarkList(Integer page,Integer size);

    /**
     * 根据Id回显品牌
     * @param id
     * @return
     */
    public BaseTrademark getBaseTrademarkById(Long id);

    /**
     * 根据Id删除品牌
     * @param id
     */
    public void deleteBaseTrademarkById(Long id);

    /**
     * 根据Id修改
     * @param baseTrademark
     */
    public void updateBaseTrademark(BaseTrademark baseTrademark);

    /**
     * 新增品牌
     * @param baseTrademark
     */
    public void saveBaseTrademark(BaseTrademark baseTrademark);

    /**
     * 分页查询sku信息
     * @param page
     * @param size
     * @return
     */
    public IPage<SkuInfo> skuInfoList(Integer page,Integer size);

    /**
     * 根据spuId查询所有的销售属性信息
     * @param spuId
     * @return
     */
    public List<SpuSaleAttr> getSpuSaleAttr(Long spuId);

    /**
     * 根据spuId查询图片
     * @param spuId
     * @return
     */
    public List<SpuImage> getSpuImage(Long spuId);

    /**
     * 保存skuInfo信息
     * @param skuInfo
     */
    public void saveSkuInfo(SkuInfo skuInfo);

    /**
     * 商品图片上架或者下架
     * @param skuId
     * @param status
     */
    public void upOrDown(Long skuId,Short status);
}
